// 导入 Vue 和 VueRouter
import Vue from 'vue'
import VueRouter from 'vue-router'

// 使用 VueRouter 插件
Vue.use(VueRouter)

// 解决路由导航冗余报错（路由重复跳转报错）
// 重写 replace 方法，捕获重复导航的错误
const originalReplace = VueRouter.prototype.replace;
VueRouter.prototype.replace = function replace(location) {
    return originalReplace.call(this, location).catch(err => err);
};

// 重写 push 方法，捕获重复导航的错误
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
    return originalPush.call(this, location).catch(err => err)
}

// 定义路由配置数组
const routes = [{
    path: '/',  // 根路径（注意：这里重复定义了 name 为 Home 的路由，可能会导致问题）
    name: 'Home',  // 路由名称（与上面重复）
    component: () => import("../views/Home/Home"),  // 懒加载 Home 组件
    children: [{  // 嵌套的子路由
        path: 'index',  // 相对路径（实际路径为 /index）
        name: 'Index',  // 路由名称
        component: () => import("../views/Index/Index"),  // 懒加载 Index 组件
        meta: {  // 路由元信息
            title: "首页"  // 页面标题
        }
    },
    {
        path: 'index/:cName',  // 动态路由，带参数的路径
        name: 'Index',  // 路由名称（与上面重复，可能会导致问题）
        component: () => import("../views/Index/IndexByCName"),  // 懒加载 IndexByCName 组件
        meta: {
            title: "首页",
        }
    },
    {
        path: 'notice',  // 公告列表页
        name: 'ShowList',
        component: () => import("../views/Notice/ShowList"),
        meta: {
            title: "公告"
        }
    },
    {
        path: 'videoPlayer/:id',  // 视频播放页，带视频ID参数
        name: 'videoPlayer',
        component: () => import("../views/VideoPlay/VideoPlay"),
        meta: {
            title: "视频播放"
        }
    },
    {
        path: 'notice/:id',  // 公告详情页，带公告ID参数
        name: 'ShowOne',
        component: () => import("../views/Notice/ShowOne"),
        meta: {
            title: "公告"
        },
    },
    {
        path: 'live',  // 直播区首页
        name: 'Live',
        component: () => import("../views/Live/Live"),
        meta: {
            title: "直播区"
        }
    },
    {
        path: 'video',  // 视频区首页
        name: 'Video',
        component: () => import("../views/Video/Video"),
        meta: {
            title: "视频区"
        }
    },
    {
        path: 'buy/live/:id',  // 购买直播页，带直播ID参数
        name: 'BuyLive',
        component: () => import("../views/Buy/BuyLive"),
        meta: {
            title: "购买直播"
        }
    },
    {
        path: 'buy/video/:id',  // 购买视频页，带视频ID参数
        name: 'BuyVideo',
        component: () => import("../views/Buy/BuyVideo"),
        meta: {
            title: "购买视频"
        }
    },
    {
        path: 'mine',  // 个人中心页
        name: 'Mine',
        component: () => import("../views/Mine/Mine"),
        meta: {
            title: "我的"
        },
        redirect: '/mine/personal'  // 重定向到个人资料页
    },
    {
        path: 'mine',  // 个人中心页（重复定义，应该删除）
        name: 'Mine',  // 路由名称重复
        component: () => import("../views/Mine/Mine"),
        children: [{  // 个人中心的子路由
            path: 'personal',  // 个人资料页
            name: 'Personal',
            component: () => import("../views/Mine/components/Personal/Personal"),
            meta: {
                title: "个人资料"
            }
        },
        {
            path: 'live',  // 我的直播课程页
            name: 'Live',
            component: () => import("../views/Mine/components/Live/Live"),
            meta: {
                title: "我的课程"
            }
        },
        {
            path: 'video',  // 我的视频页
            name: 'Video',
            component: () => import("../views/Mine/components/Video/Video"),
            meta: {
                title: "我的视频"
            }
        },
        ]
    },
    ]
}
]

// 创建路由实例
const router = new VueRouter({
    mode: 'history',  // 使用 HTML5 History 模式（去掉 URL 中的 #）
    base: process.env.BASE_URL,  // 基础路径，从环境变量获取
    routes  // 路由配置
})

// 导出路由实例
export default router